import { Message } from 'element-ui'
let messageInstance = null
// 声明一个 resetMessage 方法，接收配置项
// 其实每次我们调用的都是 message，就是 resetMessage
// 第二次及以后调用的时候 messageInstance 已经存在了，所有会马上关闭弹框
const resetMessage = (options) => {
  // 如果已经存在实例则关闭
  if (messageInstance) {
    messageInstance.close()
  }
  // messageInstance 就是 Message 的实例
  messageInstance = Message(options)
}
['error', 'success', 'info', 'warning'].forEach(type => {
  // 往 resetMessage 这个函数上加了 4 个属性叫 'error', 'success', 'info', 'warning'
  // 这四个属性对应的值又是一个一个的函数，所以我可以这样用 resetMessage.success()
  resetMessage[type] = options => {
    if (typeof options === 'string') {
      options = {
        message: options
      }
    }
    options.type = type
    return resetMessage(options)
  }
})
export const message = resetMessage

// function fn() {}
// fn.error = () => {}
